package br.com.tcf.dao;

import java.util.List;

import br.com.tcf.Conexao.Connection;
import br.com.tcf.Conexao.DaoResource;
import br.com.tcf.entidades.Cidade;
import br.com.tcf.entidades.Estado;

public class LocalidadesDao extends DaoResource{
	private static Connection connection = new Connection();
	private List<Estado> estados;
	private List<Cidade> cidades;

	@SuppressWarnings("unchecked")
	public List<Estado> buscaEstado(){
		estados = super.select(connection, "FROM Estado");
		return estados;
	}

	@SuppressWarnings("unchecked")
	public List<Estado> buscaEstadoToEager(){
		estados = super.select(connection, "SELECT DISTINCT e FROM Estado e LEFT JOIN FETCH e.cidades");
		return estados;
	}

	@SuppressWarnings("unchecked")
	public Estado buscaEstadoPorID(String id_uf){
		estados = super.select(connection, "FROM Estado WHERE id_uf = :id", "id", id_uf);
		if(estados.size() == 0){
			return null;
		}else{
			return estados.get(0);
		}
	}

	@SuppressWarnings("unchecked")
	public List<Cidade> buscaCidadePorEstado(Estado estado){
		cidades = super.select(connection, "FROM Cidade WHERE id_uf = :estado ORDER BY nm_cidade", "estado", estado);
		return cidades;
	}

	@SuppressWarnings("unchecked")
	public List<Cidade> buscaCidade(){
		cidades = super.select(connection, "FROM Cidade ORDER BY nm_cidade");
		return cidades;
	}

	@SuppressWarnings("unchecked")
	public Cidade buscaCidadePorId(Integer id){
		cidades = super.select(connection, "FROM Cidade WHERE id_cidade = :id", "id", id);
		if(cidades.size() == 0){
			return null;
		}else{
			return cidades.get(0);
		}
	}
}
